#pragma once
#include <iostream>

static char opers[]="+-*/";

enum{
    DivZero=1,
    ModZero,
    Unknown
};


class task
{
public:
    task(int data1,int data2,char oper)
        :_data1(data1)
        ,_data2(data2)
        ,_oper(oper)
        ,_result(0)
        ,_exitcode(0)
    {}

    void run()
    {
        switch(_oper)
        {
            case '+':_result=_data1+_data2;
            break;
            case '-':_result=_data1-_data2;
            break;
            case '*':_result=_data1*_data2;
            break;
            case '/':
            if(_data2==0) _exitcode=DivZero;
            else _result=_data1/_data2;
            break;
            default :_exitcode=Unknown;
            break;
        }
    }

    std::string GetResult()
    {
        std::string r = std::to_string(_data1);
        r += _oper;
        r += std::to_string(_data2);
        r += "=";
        r += std::to_string(_result);
        r += "[code: ";
        r += std::to_string(_exitcode);
        r += "]";

        return r;
    }
    std::string GetTask()
    {
        std::string r = std::to_string(_data1);
        r += _oper;
        r += std::to_string(_data2);
        r += "=?";
        return r;
    }

private:
    int _data1;
    int _data2;
    char _oper;
    int _result;
    int _exitcode;
};